package br.com.edoc.controller.cadastro;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.edoc.entidade.TipoDocumento;
import br.com.edoc.excecoes.ExceptionApplication;
import br.com.edoc.excecoes.ExceptionValidador;
import br.com.edoc.gerentes.GerenteCadastro;

@ManagedBean(name="cadastroTipoDocumento")
@SessionScoped
public class CadastroTipoDocumentoController extends CadastroPadraoController {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1826026668946402434L;
	private TipoDocumento tipoDocumento; 
	
	private List<TipoDocumento> lista;
	@Override
	public void acaoInserir() {
		// TODO Auto-generated method stub
		GerenteCadastro gcCadastro = getAtendente().chamaGerenteCadastro();
		try {
			gcCadastro.incluir(getTipoDocumento());
			addInfoMessage("Cadastro "+getTipoDocumento().getDescricao()+" cadastrado com sucesso!");
			setLista(null);
			this.acaoLimpar();
		} catch (ExceptionApplication e) {
			// TODO Auto-generated catch block
			addErroMessage(e);
		} catch (ExceptionValidador e) {
			// TODO Auto-generated catch block
			addErroMessage(e);
		}
	}

	@Override
	public void acaoAlterar() {
		// TODO Auto-generated method stub
		GerenteCadastro gcCadastro = getAtendente().chamaGerenteCadastro();
		try {
			gcCadastro.alterar(getTipoDocumento());
			addInfoMessage(""+getTipoDocumento().getDescricao()+" alterada com sucesso!");
		} catch (ExceptionApplication e) {
			// TODO Auto-generated catch block
			addErroMessage(e);
		} catch (ExceptionValidador e) {
			// TODO Auto-generated catch block
			addErroMessage(e);
		}
	}
	
	public void acaoLimpar(){
		setTipoDocumento(null);
	}

	@Override
	public void acaoRemover() {
		// TODO Auto-generated method stub
		GerenteCadastro gcCadastro = getAtendente().chamaGerenteCadastro();
		try {
			gcCadastro.deletar(getTipoDocumento());
			addInfoMessage(""+getTipoDocumento().getDescricao()+" alterada com sucesso!");
		} catch (ExceptionApplication e) {
			// TODO Auto-generated catch block
			addErroMessage(e);
		} 
	}

	public TipoDocumento getTipoDocumento() {
		if(tipoDocumento==null){
			tipoDocumento = new TipoDocumento();
		}
		return tipoDocumento;
	}

	public void setTipoDocumento(TipoDocumento tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public List<TipoDocumento> getLista() {
		if(lista==null){
			GerenteCadastro gcCadastro = getAtendente().chamaGerenteCadastro();
			try {
				setLista(gcCadastro.obterListaEntidade(TipoDocumento.class, new TipoDocumento()));
			} catch (ExceptionApplication e) {
				// TODO Auto-generated catch block
				addErroMessage(e);
			}
		}
		return lista;
	}

	public void setLista(List<TipoDocumento> lista) {
		this.lista = lista;
	}
	
	
}
